#pragma once
#include "Augment.h"
class Weapon : public Augment
{
public:
	
	Weapon()			= default;
	virtual ~Weapon()	=default;
//Primary is ShotStyle Secondary is bulletType Need an Enum for each	
	enum WeaponType {ARCANE_SHOT=70,ARCANE_BEAM,DOUBLE_SHOT,ELECTRON_SHOT,EXPLOSIVE,FIRE_BLAST,MAGIC_MISSILE,PHOTON_SHOT,SEEKER_SLUDGE,SHOCKWAVE,SOLAR_FLARE,
					 VAMPIRIC_MAGNET};
	enum ShotStyle	{STRAIGHT_LINE=90,WAVE,BOOMERANG,SPREAD,ARC,HOMING,SHOT_BASE};
	enum BulletType {RAPID_FIRE=100,BEAM,PIERCING,RICOCHET,LIFE_STEAL,MIRROR,KNOCKBACK,DOT,STUN,AOE_CIRCLE,SLOW,DAMAGE,BULLET_BASE};
	/**********************************************************/
	// Interface:
	//	- virtual functions for children classes to override
	//	virtual void	Update(float elapsedTime)		override;
	//	virtual void	Render(void)					override;

	//	virtual SGD::Rectangle GetRect(void)	const			override;
	virtual int		GetType(void)	const			override	{ return AUG_WEP; }
	//	virtual void	HandleCollision(const GameObject* pOther)	override;

	//Accessors
	virtual int GetShotStyle(void) const  { return SHOT_BASE; }
	virtual int GetBulletType(void) const  { return BULLET_BASE; }


	float GetFireRate(void) const { return m_fFireRate; }
	int GetRange(void) const { return m_iRange; }
	int GetDamage(void) const { return m_iDamage; }
	float GetBulletSpeed(void) const { return m_iBulletSpeed; }

	//Mutators
	void SetFireRate(float fire) { m_fFireRate = fire; }
	void SetRange(int range) { m_iRange = range; }
	void SetDamage(int damage) { m_iDamage = damage; }
	void SetBulletSpeed(float speed) { m_iBulletSpeed = speed; }

protected:
	float m_fFireRate = 0.0f;
	int m_iRange = 0;
	int m_iDamage = 0;
	float m_iBulletSpeed = 0.0f;



};

